#include <iostream>
using namespace std;

class Point 
{
	public :
		int m_x;
		int m_y;
	public :
		Point(int x = 0, int y = 0) :
			m_x(x), m_y(y)
		{}

		void display()
		{
			cout << "Point : (" << m_x << "," << m_y << ")" <<endl;
		}
	protected :
};

class Circle
{
	private :
		double m_r;
		Point *m_p;
	public :
		Circle(double r = 3, int x = 1, int y = 4) : m_r(r)
		{
			m_p = new Point;
			(*m_p).m_x = x;
			(*m_p).m_y = y;
			cout << "Default Circle init()" << endl << endl;
		}

		Circle(const Circle& c1) : m_r(c1.m_r)
		{
			m_p = new Point;
			m_p = c1.m_p;
			cout << "Circle copy()" << endl << endl;
		}

		~Circle()
		{
			//delete m_p;
			m_p = NULL;
			cout << "Circle destruction()" << endl << endl;
		}

		void display()
		{
			cout << "R : " << m_r << endl;
			(*m_p).display();
		}
	protected :
};

int main()
{
	Circle c;
	c.display();

	Circle c2(c);
	c2.display();
}
